from .operator import AbstractOperator
from .opertype import *

class AbstractSource(AbstractOperator):

    def __init__(self, config, operType=SOURCE):
        super().__init__(config, operType)

    def doOpen(self):
        return super().doOpen()
    
    def doClose(self):
        return super().doClose()
    
    def doProcess(self, *args, **kwargs):
        return super().doProcess(*args, **kwargs)


class AbstractFilter(AbstractOperator):

    def __init__(self, config, operType=FILTER):
        super().__init__(config, operType)
    
    def doOpen(self):
        return super().doOpen()
    
    def doClose(self):
        return super().doClose()
    
    def doProcess(self, *args, **kwargs):
        return super().doProcess(*args, **kwargs)


class AbstractSink(AbstractOperator):

    def __init__(self, config, operType=SINK):
        super().__init__(config, operType)
    
    def doOpen(self):
        return super().doOpen()
    
    def doClose(self):
        return super().doClose()
    
    def doProcess(self, *args, **kwargs):
        return super().doProcess(*args, **kwargs)


class AbstractMerger(AbstractOperator):

    def __init__(self, config, operType=MERGE):
        super().__init__(config, operType)
    
    def doOpen(self):
        return super().doOpen()
    
    def doClose(self):
        return super().doClose()
    
    def doProcess(self, *args, **kwargs):
        return super().doProcess(*args, **kwargs)

